package com.demo.main.service;
import com.demo.main.dao.NoticeDao;
import com.demo.main.dao.impl.NoticeDaoImpl;
import com.demo.main.entity.Notice;
import com.demo.main.utils.DateUtil;
import com.demo.main.vo.NoticeVo;
import java.util.List;
import java.util.stream.Collectors;
public class NoticeService extends BaseService<Notice, Integer> {
    private final NoticeDao noticeDao = new NoticeDaoImpl();
    public NoticeService() {
        super(new NoticeDaoImpl());
    }
    // findAllVoDesc方法用于查询所有公告信息，并将查询结果转换为NoticeVo对象列表，同时按照发布时间降序排列。
    public List<NoticeVo> findAllVoDesc() {
        // 调用noticeDao的selectAllByDesc方法，按照发布时间降序查询所有公告信息，并将结果存储在notices列表中。
        List<Notice> notices = noticeDao.selectAllByDesc();
        // 首先，将每个Notice对象映射为一个新的NoticeVo对象。
        // 在映射过程中，还调用了DateUtil.localDateTimeToString方法，将Notice对象的发布时间转换为字符串格式，
        // 并设置到NoticeVo对象的publishDateString属性中。
        // 最后，将转换后的NoticeVo对象收集到一个新的列表中，并返回这个列表。
        return notices.stream().map((notice) -> {
                    NoticeVo noticeVo = new NoticeVo(notice); // 创建NoticeVo对象，并以Notice对象为参数进行初始化。
                    noticeVo.setPublishDateString(DateUtil.localDateTimeToString(notice.getPublishDate())); // 设置公告发布时间的字符串表示。
                    return noticeVo; // 返回转换后的NoticeVo对象。
                })
                .collect(Collectors.toList()); // 收集转换后的NoticeVo对象到一个列表中。
    }
}